package cn.lqz.bucttrain.service;

import cn.lqz.bucttrain.pojo.dto.OrderCreateDTO;
import cn.lqz.bucttrain.pojo.dto.OrderPageQueryDTO;
import cn.lqz.bucttrain.pojo.dto.OrderStatisticDTO;
import cn.lqz.bucttrain.pojo.dto.OrderUpdateDTO;
import cn.lqz.bucttrain.pojo.vo.OrderStatisticMoneyVO;
import cn.lqz.bucttrain.pojo.vo.OrderStatisticNumVO;
import cn.lqz.bucttrain.pojo.vo.OrderVO;
import cn.lqz.bucttrain.pojo.vo.PageResultVO;
import jakarta.servlet.http.HttpServletResponse;

import java.util.List;

/**
 * 订单service
 */
public interface OrderService {
    /**
     * 加载或查询订单
     * @param orderPageQueryDTO
     * @return
     */
    PageResultVO loadOrderList(OrderPageQueryDTO orderPageQueryDTO);

    /**
     * 添加订单
     * @param orderCreateDTO
     */
    void addOrder(OrderCreateDTO orderCreateDTO);

    /**
     * 修改订单
     * @param orderUpdateDTO
     */
    void updateOrder(OrderUpdateDTO orderUpdateDTO);

    /**
     * 删除订单
     * @param orderId
     */
    void deleteOrder(Long orderId);

    /**
     * 导出订单
     * @param orderVOList
     * @param response
     */
    void exportOrderExcel(List<OrderVO> orderVOList, HttpServletResponse response);

    /**
     * 统计订单数量
     * @param orderStatisticDTO
     * @return
     */
    OrderStatisticNumVO orderNumStatistic(OrderStatisticDTO orderStatisticDTO);

    /**
     * 统计订单金额
     * @param orderStatisticDTO
     * @return
     */
    OrderStatisticMoneyVO orderMoneyStatistic(OrderStatisticDTO orderStatisticDTO);


}
